// 定义一个名为 NoticeBoard 的类，它继承自 AcGameObject 类
// 这个类用于表示游戏中的公告板，用于显示游戏状态或消息
class NoticeBoard extends AcGameObject {
    // 构造函数，用于初始化公告板对象
    // 接收一个参数 playground，该参数代表游戏场景或游戏地图的上下文
    constructor(playground) {
        super();
        this.playground = playground; // 保存游戏场景对象，以便后续使用
        this.ctx = this.playground.game_map.ctx; // 获取游戏地图的画布上下文（ctx），用于绘制文本
        this.text = "已就绪：0人"; // 初始化公告板上的文本信息，表示当前就绪人数为0
    }

    // start 方法，当前为空实现
    start() {

    }

    // write 方法，用于更新公告板上的文本信息
    // 接收一个参数 text，该参数是要显示的文本信息
    write(text) {
        this.text = text; // 更新公告板上的文本信息为传入的 text 参数
    }

    // update 方法，用于更新公告板的状态
    // 在游戏循环中调用，以确保公告板显示的信息是最新的
    // 这个方法通常会被游戏引擎定期调用
    update() {
        this.render(); // 调用 render 方法来重新绘制公告板，以显示最新的文本信息
    }

    // render 方法，用于在画布上绘制公告板及其文本信息
    // 这个方法会根据当前的文本信息和画布上下文（ctx）来绘制公告板
    render() {
        this.ctx.font = "20px serif"; // 设置文本的字体和大小
        this.ctx.fillStyle = "white"; // 设置文本的颜色为白色
        this.ctx.textAlign = "center"; // 设置文本的对齐方式为居中
        // 在画布上绘制文本，文本内容为 this.text，位置为游戏场景宽度的一半（水平居中），以及垂直方向上的20像素位置
        this.ctx.fillText(this.text, this.playground.width / 2, 20);
    }
}
